package handler;

import dao.ProdutoraDao;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named;
import javax.persistence.RollbackException;
import pojo.Produtora;

/**
 *
 * @author VALERIO
 */
@Named(value = "produtoraHandler")
@SessionScoped
public class ProdutoraHandler implements Serializable {

    @EJB
    private ProdutoraDao produtoradao = new ProdutoraDao();
    private Produtora produtora = new Produtora();
    private List<Produtora> listaprodutora = new ArrayList<>();
    private Produtora excluido;
    private long idFilme;

    public ProdutoraHandler() {
        if (FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario") == null) {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("Login.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CategoriaHandler.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public long getIdFilme() {
        return idFilme;
    }

    public void setIdFilme(long idFilme) {
        this.idFilme = idFilme;
    }

    public Produtora getExcluido() {
        return excluido;
    }

    public void setExcluido(Produtora excluido) {
        this.excluido = excluido;
    }

    public List<Produtora> getListaprodutora() {
        return listaprodutora;
    }

    public void setListaprodutora(List<Produtora> listaprodutora) {
        this.listaprodutora = listaprodutora;
    }

    public Produtora getProdutora() {
        return produtora;
    }

    public void setProdutora(Produtora produtora) {
        this.produtora = produtora;
    }

    public ProdutoraDao getProdutoradao() {
        return produtoradao;
    }

    public void setProdutoradao(ProdutoraDao produtoradao) {
        this.produtoradao = produtoradao;
    }

    public String salvar() {
        //    produtora.setTbFilmeCollection(filmedao.pesquisar(idFilme));
        produtoradao.inserir(produtora);
        cancelar();
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONFIRMAÇÃO",
                "Cadastrado realizado com sucesso!"));
        return "CadastroProdutora.xhtml";
    }

    public List<Produtora> listaprodutora() {
        return listaprodutora = produtoradao.getAll();
    }

    public String removerprodutora(Produtora obj) {
        try {
            produtoradao.excluir(obj);
            cancelar();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "CONFIRMAÇÃO", "Registro removido com sucesso!"));
        } catch (RollbackException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,
                    "ATENÇÃO", "Registro já esta em uso, não pode ser removido."));
        }
        return "CadastroProdutora.xhtml";
    }

    public void parametroRemover(ActionEvent event) {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idParaRemover");
        excluido = (Produtora) param.getValue();
    }

    public void remover() {
        removerprodutora(excluido);
        excluido = null;
    }

    public void alterar(Produtora obj) {
        obj = produtoradao.pesquisar(obj.getProCodigo());
        this.produtora = obj;
    }

    public String cancelar() {
        produtora = new Produtora();
        return "CadastroProdutora.xhtml";
    }

    public String paginaProdutora() {
        return "CadastroProdutora.xhtml";
    }
}
